Код взял с сайта
bot4sale.ru/
Спасибо автору за публикацию. Дублирую здесь с некоторыми комментами.
Публикую как есть, за ошибки отвественности нет, не является рекомендацией!
LUA код считает цену опциона по формуле
Блэка–
Шоулза.
function cnd(x)
-- taylor series coefficients
local a1, a2, a3, a4, a5 = 0.31938153, -0.356563782, 1.781477937,-1.821255978, 1.330274429
local l = math.abs(x)
local k = 1.0 / (1.0 + 0.2316419 * l)
local w = 1.0 - 1.0 / math.sqrt(2 * math.pi) * math.exp(-l * l / 2) * (a1 * k + a2 * k * k + a3 * (k^3) + a4 * (k^4) + a5 * (k^5))
if x < 0 then w = 1.0 - w end
return w
end
-- The Black-Scholes option valuation function
-- is_call: true for call, false for put
-- s: current price
-- x: strike price
-- t: time
-- r: interest rate
-- v: volatility
function black_scholes(is_call, s, x, t, r, v)
local d1 = (math.log(s / x) + (r + v * v / 2.0) * t) / (v * math.sqrt(t))
local d2 = d1 - v * math.sqrt(t)
if is_call then
return s * cnd(d1) - x * math.exp(-r * t) * cnd(d2)
else
return x * math.exp(-r * t) * cnd(-d2) - s * cnd(-d1)
end
end
Проверено вчера на путах сишки. Расчет совпал с табличными значениями «теор цена» на июньских, сентярьских, декабрьских досках опционов.
(
Читать дальше )